'use strict';
const  {timestamps} = require('../utlis/helper')
module.exports = function (sequelize, DataTypes) {
    let User = sequelize.define('user', {
        id: {
            type: DataTypes.UUID,
            primaryKey: true,
            allowNull: false,
            defaultValue: DataTypes.UUIDV1
        },
        // account:{
        //     type: DataTypes.STRING,
        //     allowNull: true
        // },
        name: {
            type: DataTypes.STRING,
            allowNull: false
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        mobile: {
            type: DataTypes.STRING(11),
            allowNull: false
        },
        createdAt: {
            type: DataTypes.INTEGER(11),
            allowNull: true
        },
        updatedAt: {
            type: DataTypes.INTEGER(11),
            allowNull: true
        }
    }, {
        indexes:[
            // Create a unique index on email
            {
                unique: true,
                fields: ['name']
            },
            {
                unique: true,
                fields: ['mobile']
            }
        ],
        hooks: {
            beforeCreate(instances, options) {
                instances.createdAt = instances.updatedAt = timestamps()
            },
            beforeUpdate(instances, options) {
                instances.updatedAt = timestamps()
            },
            beforeBulkCreate: function (instances, options) {
                options.individualHooks = true;//这可以通过将 {individualHooks:true} 传递给 remove 调用来简单地解决，从而导致每个 hook 都通过实例对象被删除。
            },
            beforeBulkUpdate: function (options) {
                options.individualHooks = true;//这可以通过将 {individualHooks:true} 传递给 remove 调用来简单地解决，从而导致每个 hook 都通过实例对象被删除。
            }
        }
    })
    return User
}